package com.ball.dev.service.impl;

import com.ball.common.dtos.ResponseResult;
import com.ball.common.enums.AppHttpCodeEnum;
import com.ball.common.utils.BeanUtils;
import com.ball.common.utils.CollUtils;
import com.ball.dev.entity.po.Teach;
import com.ball.dev.entity.vo.TeachVo;
import com.ball.dev.mapper.TeachMapper;
import com.ball.dev.service.ITeachService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 篮球实战教学 服务实现类
 * </p>
 *
 * @author lou
 * @since 2024-04-10
 */
@Service
public class TeachServiceImpl extends ServiceImpl<TeachMapper, Teach> implements ITeachService {

    /**
     * 添加教学信息
     * @param teach 教学信息对象，包含教学相关的详细信息
     * @return 返回操作结果，成功则返回添加成功的消息，失败则返回错误消息
     */
    @Override
    public ResponseResult addTeach(Teach teach) {
        // 检查传入的teach对象是否为null，如果为null则返回参数缺失错误
        if (teach == null){
            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_REQUIRE,"参数不能为空");
        }
        // 设置创建时间为当前时间
        teach.setCreateTime(LocalDateTime.now());
        // 设置状态为0（代表正常或其他默认状态）
        teach.setStatus(0);

        // 调用save方法保存教学信息，成功则返回添加成功的消息，失败则返回服务器错误消息
        return save(teach) ? ResponseResult.okResult("添加成功") :
                ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR,"添加失败");
    }


    /**
     * 获取教学列表信息
     *
     * @return 返回教学列表的响应结果。如果列表为空，则返回错误结果，提示数据不存在。
     */
    @Override
    public ResponseResult getTeachList() {
        // 查询状态为0的教学信息列表
        List<Teach> list = lambdaQuery()
                .eq(Teach::getStatus, 0).list();

        // 检查查询结果是否为空，为空则返回数据不存在的错误结果
        if (CollUtils.isEmpty(list)){
            return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,"没有找到相关数据");
        }

        // 将查询到的教学信息转换为教学视图对象列表
        List<TeachVo> vos = BeanUtils.copyList(list, TeachVo.class);

        // 返回转换后的教学视图对象列表的正常结果
        return ResponseResult.okResult(vos);
    }
}
